package RapiWeb;

import Utilidades.Archivo;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;

public class JP_Master extends JPanel {

    private JButton btn_Abrir;
    private JButton btn_Nuevo;
    private JButton btn_Guardar;
    private JTextField txt_NomMaster;
    private JTextArea txt_AreaMaster;
    private JTextArea txt_AreaVB;
    private JComboBox cbx_Masters;
    private JF_Principal principal;

    public JP_Master(JF_Principal principal) {
        this.principal = principal;
        setLayout(new BorderLayout());
        setBackground(Color.red);
        m_IniciarDatos();
        addComponentes();
        addEventos();

    }

    private void m_IniciarDatos() {
    }

    private void addComponentes() {
        JPanel p_Norte = new JPanel();
        JPanel p_Datos[] = new JPanel[3];
        for (int i = 0; i < p_Datos.length; i++) {
            p_Datos[i] = new JPanel();
            p_Datos[i].setLayout(new GridLayout(3, 1));
        }
        JLabel lbl_NomMaster = new JLabel("Nombre Master:");
        JLabel lbl_Masters = new JLabel("Master:");
        btn_Abrir = new JButton("Abrir");
        btn_Nuevo = new JButton("Nuevo");
        btn_Guardar = new JButton("Guardar");
        txt_NomMaster = new JTextField(20);
        String[] str_Masters = new String[principal.getStr_Master().length / 2];
        int j = 0;
        for (int i = 0; i < principal.getStr_Master().length; i++) {
            if (principal.getStr_Master()[i].indexOf(".vb") < 0) {
                str_Masters[j] = (principal.getStr_Master()[i]);
                j++;
            }
        }
        cbx_Masters = new JComboBox(str_Masters);
        JButton btn_Vacio = new JButton(" ");
        btn_Vacio.setOpaque(false);
        btn_Vacio.setBorderPainted(false);
        btn_Vacio.setEnabled(false);
        btn_Vacio.setVisible(false);

        p_Datos[0].add(lbl_Masters);
        p_Datos[0].add(lbl_NomMaster);
        p_Datos[0].add(btn_Vacio);

        p_Datos[1].add(cbx_Masters);
        p_Datos[1].add(txt_NomMaster);


        p_Datos[2].add(btn_Abrir);
        p_Datos[2].add(btn_Nuevo);
        p_Datos[2].add(btn_Guardar);

        for (int i = 0; i < p_Datos.length; i++) {
            p_Norte.add(p_Datos[i]);
        }

        txt_AreaMaster = new JTextArea();
        txt_AreaMaster.setVisible(false);
        JScrollPane sp_AreaASP = new JScrollPane(txt_AreaMaster);
        txt_AreaVB = new JTextArea();
        txt_AreaVB.setVisible(false);
        JScrollPane sp_AreaVB = new JScrollPane(txt_AreaVB);
        JPanel p_Centro = new JPanel();
        p_Centro.setLayout(new GridLayout(1, 2));
        p_Centro.add(sp_AreaASP);
        p_Centro.add(sp_AreaVB);

        add(p_Norte, "North");
        add(p_Centro, "Center");

    }

    private void addEventos() {
        btn_Abrir.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                String str_NomArchivo = "" + (String) cbx_Masters.getSelectedItem();
                if (!str_NomArchivo.equals("null")) {
                    Archivo archivo = new Archivo();
                    archivo.m_LeerArchivo(principal.getStr_DirecMaster() + str_NomArchivo);
                    txt_AreaMaster.setText(archivo.dameContenido());
                    txt_AreaMaster.setVisible(true);

                    archivo.m_LeerArchivo(principal.getStr_DirecMaster() + str_NomArchivo + ".vb");
                    txt_AreaVB.setText(archivo.dameContenido());
                    txt_AreaVB.setVisible(true);

                    str_NomArchivo = str_NomArchivo.replace(".master", "");
                    txt_NomMaster.setText(str_NomArchivo);
                }


            }
        });

        btn_Nuevo.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                if (txt_NomMaster.getText().length() > 0) {
                    txt_AreaMaster.setVisible(true);
                    txt_AreaVB.setVisible(true);
                } else {
                    JOptionPane.showMessageDialog(null, "La MasterPage requere un nombre");
                }
            }
        });

        btn_Guardar.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                if (txt_NomMaster.getText().length() > 0) {
                    Archivo archivo = new Archivo();
                    String str_NomArchivoMaster = principal.getStr_DirecMaster() + txt_NomMaster.getText() + ".master";
                    String str_NomArchivoVB = principal.getStr_DirecMaster() + txt_NomMaster.getText() + ".master.vb";
                    archivo.m_CrearCarpeta(principal.getStr_DirecMaster());
                    archivo.m_CrearArchivo(str_NomArchivoMaster);
                    archivo.m_CrearArchivo(str_NomArchivoVB);
                    archivo.m_SobreEscribir(str_NomArchivoMaster, txt_AreaMaster.getText());
                    archivo.m_SobreEscribir(str_NomArchivoVB, txt_AreaVB.getText());
                    String str_Mensaje = "MasterPage guardada.";
                    boolean bol_Agregar = true;
                    for (int i = 0; i < cbx_Masters.getItemCount(); i++) {
                        if ((txt_NomMaster.getText() + ".master").equals((String) cbx_Masters.getSelectedItem())) {
                            bol_Agregar = false;
                            break;
                        } else {
                            bol_Agregar = true;
                        }
                    }
                    if (bol_Agregar) {
                        if (cbx_Masters.getItemCount() > 0) {
                            cbx_Masters.insertItemAt(txt_NomMaster.getText() + ".master", cbx_Masters.getItemCount() - 1);
                        } else {
                            cbx_Masters.insertItemAt(txt_NomMaster.getText() + ".master", 0);
                        }
                    }

                    JOptionPane.showMessageDialog(null, str_Mensaje);
                } else {
                    JOptionPane.showMessageDialog(null, "La MasterPage requere un nombre");
                }
            }
        });
    }
}
